package com.wgy.day35函数式接口和Lambda.函数式编程;
/*
日志案例
使用函数式接口MessageBuilder作为方法的参数使用
使用Lambda表达式作为参数传递,仅仅是把参数传递到showLog方法中
只有满足条件,日志的等级是1级
才会调用接口MessageBuilder中的方法builder方法,才会进行字符串的拼接
如果不满足条件,日志的等级不是1级
那么不会调用接口MessageBuilder中的方法builder方法,所以拼接字符串的代码也不会执行
所以不会存在性能的浪费

*/
public class Demo02Logger {
    public static void main(String[] args) {
        String msg1="Hello";
        String msg2="World";
        String msg3="Java";
        //调用showLog方法,参数MessageBuilder是一个函数式接口,所以可以传递Lambda表达式
        showLog(1,()->{return msg1+msg2+msg3;});
        showLog(2,()->{return msg1+msg2+msg3;});

    }
    public static void showLog(int level,MessageBuilder mb){
        if(level==1){
            System.out.println(mb.builder());
        }

    }
}
